<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        function fun() {
            console.log('函数方法');

        }

        // var fun = 10;
        // fun(); //报错： fun is not a function
        // js 中，如果代码报错 那么后面的代码将不再继续执行，

        // 需求： 希望代码出错之后， 后面的代码还能继续执行，



        /***********************
        代码的异常处理
        */
        // var str= 'zifuchuan'；语法错误
        // 异常处理 是 处理非语法的错误

        /*
        格式：
            try {

            } catch (e) {

            }
        */
        try {
            var fun = 10;
            fun();
            // 将可能出错的 代码 放置到 异常处理 代码块中 
            // 如果出现错误 就会进入 catch (e) 代码块 e表示 error 信息；
            // catch (e) 代码块可以 处理 出错问题， 
            // 将可能出错的代码放置到 异常处理代码块 中 可以不影响后面 代码的执行
        } catch (e) {
            console.log(e);

        }
        console.log('程序没有问题');



        /***************** 自定义异常信息 *********/

        try {
            function fun2(name) {
                if (name == undefined) {
                    // 自定义异常信息
                    // 通过 throw 关键字 返回异常信息 ， 返回异常信息之后的代码不在执行， 会执行 catch 中的代码
                    throw { errMag: '未传参数', code: 10003 };

                }
                console.log(name);

            }
            fun2()
        } catch{
            console.log(e.errMag);

        } finally {
            // 你不管是否出错 都会执行 这里的代码， 这里可以释放一些资源 在后端开发使用比较多 （Node.js）

        }
        console.log('fun2 执行之后');










    </script>
</body>

</html>